home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
party2
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
23KB
|
657 lines
local function setViewShift(model, reference, shift_x, shift_y)
model_setViewShift(model.index,
reference.X + shift_x - model.X,
reference.Y + shift_y - model.Y)
end
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky15.ogg")
local pokus = getRestartCount()
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.okno1 = 0
room.okno2 = 0
room.okna = 0
room.uvod = 0
room.opikniku = random(8) + 1
repeat
room.ounave = random(16) + 5
until math.abs(room.ounave - room.opikniku) > 3
repeat
room.oublizeni = random(24) + 9
until math.abs(room.oublizeni - room.opikniku) > 3 and math.abs(room.oublizeni - room.ounave) > 3
room.otezkosti = random(500)
return function()
if (room.okno1 == 0 or room.okno2 == 0) and random(1000) < 25 then
if room.okno1 == 0 and room.okno2 == 0 and random(2) == 0 then
pom1 = 1
elseif room.okno1 == 0 and room.okno2 == 0 then
pom1 = 2
elseif room.okno1 == 0 then
pom1 = 1
else
pom1 = 2
end
switch(random(5)){
[0] = function()
if frkavec.zprava == 0 then
frkavec.zprava = pom1
switch(pom1){
[1] = function()
room.okno1 = 1
end,
[2] = function()
room.okno2 = 1
end,
}
end
end,
[1] = function()
if hnat.zprava == 0 then
hnat.zprava = pom1
switch(pom1){
[1] = function()
room.okno1 = 1
end,
[2] = function()
room.okno2 = 1
end,
}
end
end,
[2] = function()
if lahev.zprava == 0 then
lahev.zprava = pom1
switch(pom1){
[1] = function()
room.okno1 = 1
end,
[2] = function()
room.okno2 = 1
end,
}
end
end,
[3] = function()
if kuk.zprava == 0 then
kuk.zprava = pom1
switch(pom1){
[1] = function()
room.okno1 = 1
end,
[2] = function()
room.okno2 = 1
end,
}
end
end,
[4] = function()
if ruka.zprava == 0 then
ruka.zprava = pom1
switch(pom1){
[1] = function()
room.okno1 = 1
end,
[2] = function()
room.okno2 = 1
end,
}
end
end,
}
end
if no_dialog() and isReady(small) and isReady(big) then
if room.okno1 + room.okno2 == 2 and room.okna < 2 then
if room.opikniku > 0 then
room.opikniku = room.opikniku - 1
end
if room.ounave > 0 then
room.ounave = room.ounave - 1
end
if room.oublizeni > 0 then
room.oublizeni = room.oublizeni - 1
end
end
if ocel.X >= 23 and room.otezkosti > 0 then
room.otezkosti = room.otezkosti - 1
end
if room.uvod == 0 then
room.uvod = 1
switch(pokus){
[1] = function()
pom1 = 1
end,
[2] = function()
pom1 = random(3) + 1
end,
default = function()
pom1 = random(5)
end,
}
if pom1 > 3 then
pom1 = 0
end
adddel(10 + random(10))
if pom1 >= 1 then
addm(0, "pt2-m-parnik")
end
if pom1 >= 2 then
addv(random(30) + 10, "pt2-v-zmena")
end
if pom1 >= 3 then
planBusy(small, true)
addm(5, "pt2-m-hrac")
adddel(10)
planBusy(small, false)
end
elseif room.opikniku == 0 then
room.opikniku = random(50) + 50
addm(20, "pt2-m-piknik"..random(4))
elseif room.ounave == 0 then
room.ounave = random(50) + 50
addv(20, "pt2-v-unaveni"..random(2))
elseif room.oublizeni == 0 then
room.oublizeni = random(50) + 50
addv(20, "pt2-v-nemohou"..random(2))
elseif room.otezkosti == 0 then
room.otezkosti = -1
addv(20, "pt2-v-minule"..random(2))
end
end
room.okna = room.okno1 + room.okno2
end
end
-- -------------------------------------------------------------
local function prog_init_kuk()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
kuk:setEffect("invisible")
kuk.zprava = 0
kuk.strana = 0
kuk.okno = 0
return function()
if kuk.zprava >= 1 and kuk.zprava <= 2 then
kuk.okno = kuk.zprava
kuk.zprava = 3
kuk.strana = random(2)
switch(random(3)){
[0] = function()
kuk.anim = "a0a1a2a3a4a5d?1-10a4a3a2a1a0"
end,
[1] = function()
kuk.anim = "a6a7a8a9a10"
switch(random(3)){
[0] = function()
kuk.anim = kuk.anim.."d?1-10"
end,
[1] = function()
kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d4a15a14d?5-10a13a12a11"
end,
[2] = function()
kuk.anim = kuk.anim.."d?1-4a11a12a13a14a15a16d?3-10a15a14a13a12a11"
end,
}
kuk.anim = kuk.anim.."a10a9a8a7a6"
end,
[2] = function()
kuk.anim = "a17a18a19a20a21a22a23d?1-10a22a21a20a19a18a17"
end,
}
resetanim(kuk)
end
if kuk.anim == "" or endanim(kuk) then
if kuk.zprava == 3 then
if kuk.okno == 1 then
room.okno1 = 0
else
room.okno2 = 0
end
kuk.zprava = 0
kuk.okno = 0
kuk:setEffect("invisible")
end
else
goanim(kuk)
end
switch(kuk.okno){
[0] = function()
setViewShift(kuk, kabina, 3, 1)
end,
[1] = function()
setViewShift(kuk, kabina, 3, 1)
end,
[2] = function()
setViewShift(kuk, kabina, 9, 1)
end,
}
if kuk.okno == 0 then
kuk:setEffect("invisible")
else
if kuk.strana == 1 then
kuk:setEffect("reverse")
else
kuk:setEffect("none")
end
end
kuk:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_ruka()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
ruka:setEffect("invisible")
ruka.zprava = 0
ruka.strana = 0
ruka.okno = 0
return function()
if ruka.zprava >= 1 and ruka.zprava <= 2 then
ruka.okno = ruka.zprava
ruka.zprava = 3
ruka.strana = random(2)
ruka.anim = ""
pom2 = 0
for pom1 = 1, random(14) + 2 do
ruka.anim = ruka.anim.."a"..pom2
if pom2 >= 5 then
ruka.anim = ruka.anim.."d1"
end
if pom2 == 6 then
pom2 = 5
else
pom2 = pom2 + 1
end
end
for pom1 = pom2 - 1, 0, -1 do
ruka.anim = ruka.anim.."a"..pom1
end
resetanim(ruka)
end
if ruka.anim == "" or endanim(ruka) then
if ruka.zprava == 3 then
if ruka.okno == 1 then
room.okno1 = 0
else
room.okno2 = 0
end
ruka.zprava = 0
ruka.okno = 0
ruka:setEffect("invisible")
end
else
goanim(ruka)
end
switch(ruka.okno){
[0] = function()
setViewShift(ruka, kabina, 3, 1)
end,
[1] = function()
setViewShift(ruka, kabina, 3, 1)
end,
[2] = function()
setViewShift(ruka, kabina, 9, 1)
end,
}
if ruka.okno == 0 then
ruka:setEffect("invisible")
else
if ruka.strana == 1 then
ruka:setEffect("reverse")
else
ruka:setEffect("none")
end
end
ruka:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_frkavec()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
frkavec:setEffect("invisible")
frkavec.zprava = 0
frkavec.strana = 0
frkavec.okno = 0
frkavec.frkacka = 0
return function()
if frkavec.zprava >= 1 and frkavec.zprava <= 2 then
frkavec.okno = frkavec.zprava
frkavec.zprava = 3
frkavec.strana = random(2)
frkavec.anim = "a0a1a2a3a4a5"
for pom1 = 1, random(5) + 1 do
if random(2) == 0 then
frkavec.anim = frkavec.anim.."d?5-20a6d6a5"
else
frkavec.anim = frkavec.anim.."d?5-20a6s[zprava],1s[zprava],2d6s[zprava],1s[zprava],0,a5"
end
end
frkavec.anim = frkavec.anim.."a4a3a2a1a0"
resetanim(frkavec)
end
if frkavec.anim == "" or endanim(frkavec) then
if frkavec.zprava == 3 then
if frkavec.okno == 1 then
room.okno1 = 0
else
room.okno2 = 0
end
frkavec.zprava = 0
frkavec.okno = 0
frkavec:setEffect("invisible")
end
else
goanim(frkavec)
end
switch(frkavec.okno){
[0] = function()
setViewShift(frkavec, kabina, 3, 1)
end,
[1] = function()
setViewShift(frkavec, kabina, 3, 1)
end,
[2] = function()
setViewShift(frkavec, kabina, 9, 1)
end,
}
if frkavec.okno == 0 then
frkavec:setEffect("invisible")
else
if frkavec.strana == 1 then
frkavec:setEffect("reverse")
else
frkavec:setEffect("none")
end
end
frkavec:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_hnat()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
hnat.drazdit = random(5) + 1
hnat:setEffect("invisible")
hnat.zprava = 0
hnat.strana = 0
hnat.okno = 0
return function()
if hnat.zprava >= 1 and hnat.zprava <= 2 then
hnat.okno = hnat.zprava
hnat.zprava = 3
hnat.strana = random(2)
if hnat.drazdit > 0 then
hnat.drazdit = hnat.drazdit - 1
switch(random(4)){
[0] = function()
hnat.anim = "a0a1a2a3a4a5a6a7d1a6a4"
end,
[1] = function()
hnat.anim = "a0a1a2a3a4a5a6a7a8d1a6a4"
end,
[2] = function()
hnat.anim = "a0a1a2a3a4a5a6a7a8a9d1a8a6a4"
end,
[3] = function()
hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10d1a8a6a4"
end,
}
for pom1 = 1, random(5) do
hnat.anim = hnat.anim.."d1a3d1a4"
end
hnat.anim = hnat.anim.."a3a2a1a0"
elseif hnat.drazdit == 0 then
hnat.anim = "a0a1a2a3a4a5a6a7a8a9a10a11a12a13"
switch(random(3)){
[0] = function()
hnat.anim = hnat.anim.."a14a15a16a17a18a19a20a21"
end,
[1] = function()
hnat.anim = hnat.anim.."d3a15a17a19a21"
end,
[2] = function()
hnat.anim = hnat.anim.."d7a15a18a21"
end,
}
hnat.drazdit = -random(5) - 2
elseif hnat.drazdit < 0 then
hnat.drazdit = hnat.drazdit + 1
if hnat.drazdit == 0 then
hnat.drazdit = random(5) + 1
end
end
resetanim(hnat)
end
if hnat.anim == "" or endanim(hnat) then
if hnat.zprava == 3 then
if hnat.okno == 1 then
room.okno1 = 0
else
room.okno2 = 0
end
hnat.zprava = 0
hnat.okno = 0
end
else
goanim(hnat)
end
switch(hnat.okno){
[0] = function()
setViewShift(hnat, kabina, 3, 1)
end,
[1] = function()
setViewShift(hnat, kabina, 3, 1)
end,
[2] = function()
setViewShift(hnat, kabina, 9, 1)
end,
}
if hnat.okno == 0 then
hnat:setEffect("invisible")
else
if hnat.strana == 1 then
hnat:setEffect("reverse")
else
hnat:setEffect("none")
end
end
hnat:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_lahev()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
lahev:setEffect("invisible")
lahev.zprava = 0
lahev.strana = 0
lahev.okno = 0
return function()
if lahev.zprava >= 1 and lahev.zprava <= 2 then
lahev.okno = lahev.zprava
lahev.zprava = 3
lahev.strana = random(2)
lahev.anim = "a0a1a2a3a4a5a6a7a8"
for pom1 = 1, random(4) do
for pom1 = 1, random(3) + 1 do
lahev.anim = lahev.anim.."a9a10"
end
lahev.anim = lahev.anim.."a11a12a13a14a9d?1-6"
end
lahev.anim = lahev.anim.."a8a7a6a5a4a3a2a1a0"
resetanim(lahev)
end
if lahev.anim == "" or endanim(lahev) then
if lahev.zprava == 3 then
if lahev.okno == 1 then
room.okno1 = 0
else
room.okno2 = 0
end
lahev.zprava = 0
lahev.okno = 0
end
else
goanim(lahev)
end
switch(lahev.okno){
[0] = function()
setViewShift(lahev, kabina, 3, 1)
end,
[1] = function()
setViewShift(lahev, kabina, 3, 1)
end,
[2] = function()
setViewShift(lahev, kabina, 9, 1)
end,
}
if lahev.okno == 0 then
lahev:setEffect("invisible")
else
if lahev.strana == 1 then
lahev:setEffect("reverse")
else
lahev:setEffect("none")
end
end
lahev:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_frk()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
frk:setEffect("invisible")
return function()
frk.okno = 0
if frkavec.frkacka > 0 then
if frkavec.strana == 0 and frkavec.okno == 2 or frkavec.strana == 1 and frkavec.okno == 1 then
frk.okno = 3 - frkavec.okno
frk.afaze = frkavec.frkacka - 1
end
end
switch(frk.okno){
[0] = function()
setViewShift(frk, kabina, 3, 1)
end,
[1] = function()
setViewShift(frk, kabina, 3, 1)
end,
[2] = function()
setViewShift(frk, kabina, 9, 1)
end,
}
if frk.okno == 0 then
frk:setEffect("invisible")
else
if frk.strana == 1 then
frk:setEffect("reverse")
else
frk:setEffect("none")
end
end
end
end
-- -------------------------------------------------------------
local function prog_init_glass1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
local glasses = {glass1, glass_plate}
for pom1, glass in pairs(glasses) do
glass.wav = 0
end
return function()
for pom1, glass in pairs(glasses) do
pom2 = glass.wav
if glass.dir ~= dir_no then
if pom2 == 0 then
pom2 = 9
elseif pom2 <= 6 then
pom2 = pom2 + 6
end
end
if pom2 == 0 then
glass.afaze = 0
else
pom2 = pom2 - 1
glass.afaze = 2 - math.mod(math.floor(pom2 / 3), 2)
end
glass.wav = pom2
glass:updateAnim()
end
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_kuk()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_ruka()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_frkavec()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_hnat()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_lahev()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_frk()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_glass1()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end